As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Servers are a type of information handling system, and sometimes include managed NAND flash drive devices that are directly embedded in the server motherboard. In one exemplary embodiment, such an embedded device may be further characterized as being permanent and non-removable from the motherboard, e.g., by virtue of solder or other permanent mechanical or electrical connection to the motherboard. Such a NAND flash drive device is provided to contain functions that support features within the server that are provided by the service processor firmware for example. The NAND flash drive device also provides many features related to deployment, lifecycle management, decommissioning, diagnostics, image management, etc.
The endurance of NAND flash memory is an issue, and is particularly critical when used in enterprise system applications which require higher reliability than in consumer products. NAND flash memory is organized as blocks, and each block contains multiple pages. A block can be erased reliably for a limited number of times, and frequent block erase operations reduce the lifetime of the flash memory. Wear leveling has been used to prevent the early wear out of blocks in the flash memory by spreading data around throughout the flash memory.
Managed NAND flash devices, such as embedded multimedia card (eMMC) flash, include integrated controllers that perform functions including wear leveling, error correcting code (ECC), and bad block management to help maintain an expected level of reliability. However, ever shrinking die size and increasing use of multi-level cell technology are factors that continue to reduce the expected endurance of these parts, resulting in a substantial reduction in writes per cell that may be achieved across the typical server product life under typical operating conditions. At the same time, the typical bytes per block are increasing many times, which equates to more cells being accessed on each program and erase. Also, a wide variety of file systems are used which have significantly different write amplification factors.
Existing solutions also include solid state drives (SSD) aware operating systems that implement static settings. For example Microsoft Windows 7 automatically sets Defrag off as a default to reduce writes, and implements a “Trim” feature such that the SSD is aware of files marked as deleted files. Predictive failure determination is also currently an area of interest for improving server availability, and SSDs may have other existing predictive failure methods in place.
FIG. 1 is a simplified block diagram of a conventional NAND flash architecture that includes a NAND flash device 100 coupled to a processing device (baseboard management controller BMC or service processor) 110 by a NAND bus 112 (e.g., eMMC, ONFI, or other type of NAND bus). FIG. 1 shows storage area of NAND flash device 100 as it may be configured with private storage area 102 (e.g., for storing MAC addresses of the server management network controllers, logs of various system events, etc.). Also present in NAND flash device 100 is bootloader N 104 that performs the function of BMC hardware configuration, power on self test and booting of the embedded operating system. An embedded operating system OS (N) 106 is present for the purpose of running all BMC server management functionality. Customer data store 108 is also provided for purposes of system configuration options, such as network settings.